home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / c64-preservation-project / apps / koalapad_programmers_toolkit_s1[koala_technologies_1984].nbz / cursors (.txt) < prev    next >
Encoding:
Commodore BASIC  |  2019-04-13  |  9.3 KB  |  325 lines

  1. 10 REM              CURSORS
  2. 11 :
  3. 980 GOSUB 5410:REM LOAD SPRITE FILES
  4. 982 POKE 53265,PEEK(53265)AND239
  5. 985 POKE 56578,PEEK(56578)OR3:REM SET CIA
  6. 990 POKE56576,(PEEK(56576)AND252)OR3:REM SET BANK 0
  7. 992 POKE 53272,(PEEK(53272)AND15)OR16:REM SET SCREEN
  8. 993 POKE53272,(PEEK(53272)AND240)OR4:REM SET BIT MAP
  9. 996 POKE53265,PEEK(53265)AND223:REM TURN OFF MULTICOLOR
  10. 997 POKE53270,PEEK(53270)AND239:REM TURN OFF BIT MAP
  11. 998 POKE 49191,3:POKE49194,4
  12. 1000 REM*********************************
  13. 1002 REM            CURSOR ROUTINES
  14. 1004 REM*********************************
  15. 1005 PRINTCHR$(147)
  16. 1006 REM
  17. 1008 REM
  18. 1009 CLR
  19. 1010 GOSUB 21200:REM SETUP VARIABLE NAMES
  20. 1012 POKE S1,6:POKE S2,6:POKE M1,255:POKEM2,255:REM SET TABLET VALUES
  21. 1015 :
  22. 1020 POKE LO,1:POKE LE,0:POKE SK,0:POKE SN,0:POKE P4,14
  23. 1025 PRINTCHR$(147)
  24. 1026 POKE 53265,PEEK(53265)OR16
  25. 1030 POKE CB,13:POKE CS,12
  26. 1040 PRINTCHR$(144)
  27. 1050 PRINTCHR$(147):PRINT"            CURSOR ROUTINES":PRINT:PRINT
  28. 1060 PRINT"          TEXT CURSOR":PRINT
  29. 1070 PRINT"          SPRITE CURSOR":PRINT
  30. 1080 PRINT"          MOUSE CURSOR":PRINT
  31. 1090 PRINT"          SPLIT CURSOR":PRINT
  32. 1100 PRINT"          MAIN MENU"
  33. 1130 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
  34. 1135 PRINT:PRINT:PRINT:PRINT:PRINT"  PRESS LEFT BUTTON TO MAKE SELECTION"
  35. 1200 :
  36. 1390 REM*******LOCATE CURSOR***********
  37. 1410 POKE SF,0:SYS SP:POKE SF,2:POKE XS,80:POKE XF,80:POKE H3,0:REM COL CURSOR
  38. 1420 SYS  SM:SYS SP:BS=PEEK(YL)
  39. 1430 IF PEEK(LP)=1 THEN 1440
  40. 1432 GOSUB 21900:IF SW=0 THEN 1420
  41. 1434 ON SW GOTO 1440,1420,1440,1000,1000,6000
  42. 1440 IF BS<71 THEN 1420
  43. 1450 IF BS<81 THEN N=1:GOTO 1600
  44. 1460 IF BS<87 THEN 1420
  45. 1470 IF BS<96 THEN N=2:GOTO 1600
  46. 1475 IF BS<102 THEN 1420
  47. 1480 IF BS<112 THEN N=3:GOTO 1600
  48. 1490 IF BS<120 THEN 1420
  49. 1500 IF BS<128 THEN N=4:GOTO 1600
  50. 1510 IF BS<134 THEN 1420
  51. 1520 IF BS<144 THEN N=5:GOTO 1600
  52. 1530 GOTO 1420
  53. 1600 POKE SN,0
  54. 1610 ON N GOTO 2000,3000,4000,5000,6000
  55. 1700 :
  56. 2000 REM**********************************
  57. 2010 REM*         TEXT CURSOR            *
  58. 2020 REM**********************************
  59. 2030 PRINTCHR$(147)
  60. 2031 POKE CS,0:PRINTCHR$(159)
  61. 2032 GOSUB 2200:REM INSTRUCTIONS
  62. 2033 POKE 251,255:POKE252,3:POKE 49239,0:POKE XN,0:POKE YN,0
  63. 2035 ON SW GOTO 2036,1020,2036,1020,1020,6000
  64. 2036 PRINTCHR$(147):POKE CS,3:PRINTCHR$(147):POKE CS,0:REM CLEAR COLOR MEMORY
  65. 2060 PRINT"              TEXT CURSOR":PRINT:PRINT
  66. 2070 PRINT" 'THE TIME HAS COME,' THE WALRUS SAID,":PRINT
  67. 2072 PRINT" 'TO TALK OF MANY THINGS,":PRINT
  68. 2074 PRINT" OF SHOES AND SHIPS AND SEALING WAX,":PRINT
  69. 2076 PRINT" AND CABBAGES AND KINGS.":PRINT
  70. 2078 PRINT" AND WHY THE SEA IS BOILING HOT,":PRINT
  71. 2080 PRINT" AND WHETHER PIGS HAVE WINGS.'":PRINT
  72. 2082 PRINT
  73. 2084 PRINT"                 BY LEWIS CARROLL":PRINT:PRINT
  74. 2085 PRINT"  'FROM THE WALRUS AND THE CARPENTER'":PRINT:PRINT
  75. 2086 PRINT"     PRESS THE F1 KEY TO EXIT"
  76. 2090 POKE LE,0                         :REM POKE WITH 1-6 FOR SMOOTHING
  77. 2100 POKE LO,1                         :REM POKE WITH 1 FOR A LOCKED CURSOR
  78. 2105 IV=0
  79. 2107 POKET3,0:POKET3+1,0
  80. 2110 SYS TE                              :REM CALL TEXT CURSOR ROUTINE
  81. 2112 IF IV=1 THEN GOSUB 2600
  82. 2120 IF PEEK(LP)=1 THEN GOSUB 2400:REM CHECK IF LEFT BUTTON PRESSED
  83. 2125 IF PEEK(RP)=1 THEN 2020
  84. 2126 GETQQ$:IFQQ$="" THEN 2130
  85. 2127 IF ASC(QQ$)=136 THEN 6000
  86. 2128 IF ASC(QQ$)=133 THEN 1000
  87. 2130 GOTO2110
  88. 2140 PRINTCHR$(147):GOTO1020
  89. 2150 :
  90. 2200 REM**********INSTRUCTIONS**********
  91. 2210 PRINTCHR$(147):PRINT"              TEXT CURSOR":PRINT:PRINT
  92. 2220 PRINT" THIS UTILITY DEMONSTRATES HOW TO MOVE"
  93. 2230 PRINT"A COMMODORE GRAPHICS CHARACTER ON THE"
  94. 2240 PRINT"TEXT SCREEN.":PRINT
  95. 2250 PRINT" THIS IS EXTREMELY USEFUL IN SELECTING"
  96. 2260 PRINT"ITEMS OFF THE TEXT SCREEN, OR IN CUT "
  97. 2270 PRINT"AND PASTE GRAPHICS  APPLICATIONS.":PRINT
  98. 2280 PRINT" THIS CAN ALSO BE USED FOR EDITING TEXT"
  99. 2290 PRINT"IN BUSINESS AND WORD PROCESSING"
  100. 2300 PRINT"APPLICATIONS."
  101. 2310 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
  102. 2320 PRINT" CLICK THE LEFT BUTTON TO CONTINUE"
  103. 2330 GOSUB 21900:IFSW=0THEN 2330
  104. 2350 RETURN
  105. 2400 REM******INVERSE WORDS*****
  106. 2410 MC=1024+PEEK(XN)+PEEK(YN)*40
  107. 2420 CN=PEEK(MC)
  108. 2430 IF(CN=160)OR(CN<129)THEN RETURN
  109. 2435 IV=1
  110. 2440 FOR HH=1 TO 20
  111. 2450 NN=PEEK(MC-HH)
  112. 2455 IF NN>127 THEN RETURN
  113. 2460 IF NN=32 THEN 2500
  114. 2470 POKE MC-HH,NN+128
  115. 2480 NEXT HH
  116. 2500 FOR HH=1 TO 20
  117. 2510 NN=PEEK(MC+HH)
  118. 2520 IF NN=32 THEN RETURN
  119. 2525 IF NN>127 THEN RETURN
  120. 2530 POKE MC+HH,NN+128
  121. 2540 NEXT HH
  122. 2550 RETURN
  123. 2600 REM******INVERSE LETTER****
  124. 2610 NC=1024+PEEK(XN)+PEEK(YN)*40
  125. 2620 IF MC<>NC THEN IV=0:POKE MC,CN
  126. 2630 RETURN
  127. 2700 :
  128. 3000 REM********************************
  129. 3001 REM              SPRITE CURSOR
  130. 3002 REM********************************
  131. 3003 PRINTCHR$(147)
  132. 3010 POKE CB,2:POKE CS,5:PRINTCHR$(144)
  133. 3015 GOSUB 3100:REM INSTRUCTIONS
  134. 3016 ON SW GOTO 3020,1020,3020,1020,1020,6000
  135. 3020 PRINTCHR$(147):PRINT"      SIMPLE SPRITE DEMONSTRATION"
  136. 3030 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
  137. 3040 PRINT"           PRESS LEFT BUTTON":PRINT
  138. 3050 PRINT"           TO TURN OFF SPRITE"
  139. 3052 POKE P4,14
  140. 3055 POKE SF,0
  141. 3056 POKE LE,0
  142. 3060 SYS SP
  143. 3070 IF PEEK(LP)=1 THEN POKE (SN),0:GOTO 1020
  144. 3071 IF PEEK(RP)=1 THEN POKE (SN),0:GOTO 3000
  145. 3072 GETQQ$:IFQQ$="" THEN 3080
  146. 3073 SW=ASC(QQ$)-132:IF SW<0THEN SW=0
  147. 3074 ON SW GOTO 1020,3000,1020,6000,1020,6000
  148. 3080 GOTO 3060
  149. 3090 :
  150. 3100 REM *******INSTRUCTIONS************
  151. 3110 PRINTCHR$(147):PRINT"              SPRITE CURSOR":PRINT:PRINT
  152. 3120 PRINT" A SPRITE CURSOR IS THE MOST USED TYPE"
  153. 3130 PRINT"CURSOR IN COMMODORE PROGRAMS.":PRINT
  154. 3140 PRINT" THE SPRITE CURSOR CAN BE PLACED ON"
  155. 3150 PRINT"EITHER THE TEXT SCREEN OR THE HIGH-"
  156. 3160 PRINT"RESOLUTION SCREEN.":PRINT
  157. 3170 PRINT" IT MOVES VERY FAST AND WILL NOT"
  158. 3180 PRINT"INTERFERE WITH OBJECTS ON THE SCREEN.":PRINT
  159. 3190 PRINT" SPRITES DO HAVE COLLISION DETECTION"
  160. 3200 PRINT"AND CAN INTERACT WITH OTHER SCREEN "
  161. 3210 PRINT"ELEMENTS IF DESIRED.":PRINT
  162. 3220 PRINT" MOST GAMES USE SPRITES AS THE MOVING"
  163. 3230 PRINT"OBJECTS.":PRINT:PRINT:PRINT
  164. 3240 PRINT" CLICK THE LEFT BUTTON TO CONTINUE"
  165. 3250 GOSUB 21900:IF SW=0 THEN 3250
  166. 3280 RETURN
  167. 3300 :
  168. 4000 REM*********************************
  169. 4010 REM*        MOUSE ROUTINE          *
  170. 4020 REM*********************************
  171. 4021 GOSUB 4200:REM INSTRUCTIONS
  172. 4022 VX=.7:VY=.7
  173. 4024 POKE SF,0:SYS SP:IFPEEK(LP)=1THEN1020
  174. 4025 IF PEEK(RP)=1THENPOKE SN,0:GOTO4000
  175. 4030 XC=160:YC=100
  176. 4035 POKE LO,0
  177. 4040 SYS SM:IF PEEK(LP)=1 THEN 1020
  178. 4042 IF PEEK(RP)=1 THENPOKESN,0:GOTO4000
  179. 4043 GET QQ$:IF QQ$=CHR$(136) THEN 6000
  180. 4050 X=INT(PEEK(SX)*VX):Y=INT(PEEK(SY)*VY)
  181. 4060 IF((X<=8)AND(Y<=8))THEN F=0:GOTO4040
  182. 4070 IF F=0 THEN PX=X:PY=Y:F=F+1:GOTO4040
  183. 4080 DX=X-PX:DY=Y-PY:REM CALCULATE DIFFERENCE
  184. 4090 XC=XC+DX:YC=YC+DY:REM ADD DIFFERENCE TO CURSOR LOCATION
  185. 4100 IF XC>343 THEN XC=343
  186. 4110 IF XC<11 THEN XC=11
  187. 4120 IF YC>249 THEN YC=249
  188. 4130 IF YC<40 THEN YC=40
  189. 4135 IF XC<256 THEN QX=XC:POKE XI,0
  190. 4140 IF XC>255 THEN QX=XC-256:POKE XI,1
  191. 4145 POKE XL,QX:POKE YL,YC
  192. 4150 PX=X:PY=Y
  193. 4155 GOSUB 21900
  194. 4156 ON SW GOTO 1020,4000,1020,4000,1020,6000
  195. 4160 GOTO4040
  196. 4180 :
  197. 4200 REM*********INSTRUCTIONS***********
  198. 4205 POKE SN,0
  199. 4210 PRINTCHR$(147):PRINT"          MOUSE-SPRITE CURSOR":PRINT:PRINT
  200. 4220 PRINT" A MOUSE  IS A RELATIVE MOTION STYLE OF"
  201. 4230 PRINT"POINTING IN CONTRAST TO ABSOLUTE OR "
  202. 4240 PRINT"DIRECT POINTING.":PRINT
  203. 4250 PRINT" THE AMOUNT OF CURSOR MOTION CAN BE "
  204. 4260 PRINT"SCALED UP OR DOWN BY CHANGING VX AND VY"
  205. 4270 PRINT"IN THE BASIC PROGRAM.":PRINT
  206. 4280 PRINT" MOUSE MODE CAN BE USED TO ACHIEVE HIGH"
  207. 4290 PRINT"PRECISION IN DRAWING OR POINTING AT"
  208. 4300 PRINT"OBJECTS ON THE SCREEN.":PRINT
  209. 4310 PRINT:PRINT:PRINT:PRINT:PRINT
  210. 4320 PRINT:PRINT:PRINT" CLICK THE LEFT BUTTON TO CONTINUE"
  211. 4330 GOSUB 21900:IFSW=0THEN4330
  212. 4340 ON SW GOTO 4350,1020,4350,1020,1020,6000
  213. 4350 PRINTCHR$(147):PRINT"          MOUSE SPRITE CURSOR":PRINT:PRINT:PRINT:PRINT
  214. 4360 PRINT"  STROKE YOUR FINGER OR STYLUS ON THE":PRINT
  215. 4370 PRINT"   TABLET SEVERAL TIMES IN DIFFERENT ":PRINT
  216. 4380 PRINT"  DIRECTIONS AND WATCH THE CURSOR MOVE.":PRINT
  217. 4390 PRINT:PRINT:PRINT:PRINT:PRINT
  218. 4400 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
  219. 4420 RETURN
  220. 4999 :
  221. 5000 REM*********SPLIT CURSOR**************
  222. 5001 PRINTCHR$(147)
  223. 5005 GOSUB 5600:REM INSTRUCTIONS
  224. 5010 ON SW GOTO 5030,1020,5030,1020,1020,6000
  225. 5030 POKE CB,2:POKE CS,5:PRINTCHR$(144)
  226. 5050 PRINTCHR$(147):PRINT"       SPLIT CURSOR DEMONSTRATION"
  227. 5060 POKE 214,10:PRINT:PRINT"[195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195]"
  228. 5090 POKE SF,0
  229. 5092 SYS SP
  230. 5093 IF PEEK(RP)=1 THEN SW=2:GOTO 5101
  231. 5094 IFPEEK(LP)=1 THEN SW=1:GOTO5102
  232. 5096 GOSUB 21900
  233. 5097 IF SW=0 THEN 5105
  234. 5101 IF(SW=2)OR(SW=4) THENPOKE SN,0:POKEP4,14:GOTO 5005
  235. 5102 IF(SW=1)OR(SW=3)OR(SW=5)THEN POKE SN,0:POKE P4,14:GOTO 1020
  236. 5103 IF SW=6 THEN POKE SN,0:POKE P4,14:GOTO6000
  237. 5105 IF PEEK(SY)<120 THEN POKE P4,13:POKE SK,1:REM DRAW WHITE SPRITE
  238. 5106 IF PEEK(SY)>120 THEN POKE P4,15:POKE SK,0:REM DRAW BLACK SPRITE
  239. 5200 GOTO 5090
  240. 5300 :
  241. 5410 OPEN 2,8,2,"0:SPRITE.UPARROW,S,R"
  242. 5420 FORI=832TO895
  243. 5430 INPUT#2,A
  244. 5440 POKE I,A
  245. 5520 NEXT I
  246. 5530 OPEN 3,8,3,"0:SPRITE.DNARROW,S,R"
  247. 5540 FORI=960 TO 1023
  248. 5550 INPUT#3,A
  249. 5560 POKE I,A
  250. 5570 NEXT I
  251. 5580 CLOSE2:CLOSE3
  252. 5590 RETURN
  253. 5595 :
  254. 5600 REM********INSTRUCTIONS***********
  255. 5605 POKE CS,12:POKE CB,13
  256. 5610 PRINTCHR$(147):PRINT"              SPLIT CURSOR":PRINT:PRINT
  257. 5620 PRINT" THERE ARE MANY TIMES WHEN YOU WANT ONE"
  258. 5630 PRINT"ACTIVITY IN PART OF THE SCREEN AND "
  259. 5640 PRINT"ANOTHER ACTIVITY IN ANOTHER PART. IT IS"
  260. 5650 PRINT"USEFUL TO GIVE THE USER FEEDBACK "
  261. 5660 PRINT"SHOWING THE REGION THEY ARE IN.":PRINT
  262. 5670 PRINT" THIS SPLIT CURSOR TOOL SIMPLY CHANGES"
  263. 5680 PRINT"THE CURSOR WHENEVER YOU CROSS A LINE.":PRINT
  264. 5690 PRINT" IN YOUR OWN PROGRAMS, YOU CAN MOVE THE"
  265. 5700 PRINT"BOUNDARIES, CHANGE THE SHAPE AND COLOR"
  266. 5710 PRINT"OF THE CURSOR, MAKE A MUSICAL TONE, OR"
  267. 5720 PRINT"DO WHATEVER YOU LIKE.":PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
  268. 5730 PRINT" CLICK THE LEFT BUTTON TO CONTINUE"
  269. 5740 GOSUB 21900:IF SW=0 THEN 5740
  270. 5750 PRINTCHR$(147)
  271. 5760 RETURN
  272. 5999 :
  273. 6000 REM*******GO TO MAIN MENU********
  274. 6005 POKE SN,0
  275. 6010 CLR
  276. 6015 OPEN 2,8,2,"0:SPRITE.UPARROW,S,R"
  277. 6020 CLOSE2
  278. 6025 OPEN 15,8,15
  279. 6030 INPUT#15,A$,B$,C$,D$
  280. 6035 IF VAL(A$)=0 THEN 6080
  281. 6040 PRINT"[147]":PRINT:PRINT:PRINT:PRINT:PRINT:PRINT"            ";B$
  282. 6045 FORI=1TO1000:NEXTI
  283. 6050 GOTO 1000
  284. 6080 CLR
  285. 6085 PRINT"[147]":POKE214,8:PRINT:PRINT"         LOADING MAIN MENU..."
  286. 6090 LOAD"MENU",8
  287. 21000 :
  288. 21200 REM ************SET UPS************
  289. 21202 Z5=45:Z6=46:Z7=47:Z8=48:Z9=49:Z0=50:REM ZERO PAGE BASIC POINTERS
  290. 21204 CBRDER=53280:CSCREEN=53281
  291. 21205 REM ASSEMBLY ROUTINE JUMP ADDRESS NAMES
  292. 21208 TABRAW=49328:DEBOUNCE=49331:FILTER=49334:PERFECT=49337
  293. 21210 SMOOTH=49340:PADLOCK=49343:SCALE=49346:TEXTCR=49349:SPRITE=49352
  294. 21215 PLTDOT=49355:SETSCL=49358:TURNUN=49361:KLRCOL=49364:TRNUFF=49367
  295. 21220 LINE=49382:BOX=49385:RDIUS=49388:CIRCLE=49391
  296. 21222 KOALAPICTURE=49394
  297. 21223 :
  298. 21225 REM VARIABLE NAMES
  299. 21227 RX=49152:RY=49154
  300. 21230 B1=49156:B2=49157:LDBOUNCE=49159:RDBOUNCE=49160:LPRESS=49161:RPRESS=49162
  301. 21231 LX=49163:LY=49164:TX=49165:TY=49166
  302. 21232 FX=49168:FY=49169:UX=49172:UY=49173:ERRUR=49174:M1=49175:M2=49176
  303. 21235 SX=49196:SY=49197:LEVEL=49198:LOCKST=49199
  304. 21236 P1=49201:P2=49202:P3=49203:P4=49204
  305. 21238 XH=49186:S1=49187:S2=49188:YH=49190
  306. 21240 XS=49177:YS=49179:XF=49181:YF=49183:XNW=49185:YNW=49189
  307. 21245 H1=49178:H2=49180:H3=49182:H4=49184
  308. 21246 :
  309. 21250 BANKA=49191:SSTART=49194
  310. 21255 SFLAG=49200:SNABLE=53269:SKOLR=53287:XLOSP=53248:XISP=53264:YLOSP=53249
  311. 21260 MCM=49205:COLR=49206:XR=49208
  312. 21265 X1=49209:X2=49210:Y1=49211:Y2=49212:RADIUS=49213
  313. 21270 RETURN
  314. 21280 :
  315. 21900 REM****CHECK SWITCHES**************
  316. 21905 SW=0
  317. 21910 SYS PE
  318. 21920 IF PEEK(LP)=1 THEN SW=1
  319. 21930 IF PEEK(RP)=1 THEN SW=2
  320. 21931 IF PEEK(198)=0 THEN RETURN
  321. 21940 FOR  I9=1 TO PEEK(198):GET QQ$:NEXT I9
  322. 21965 IF QQ$=CHR$(136) THEN SW=6
  323. 21970 RETURN
  324. 30000 OPEN15,8,15:PRINT#15,"S0:CURSORS":SAVE"CURSORS",8
  325.